package com.aiwiown.face.response;

import com.aiwiown.face.ApiResponse;
import com.aiwiown.face.domain.compare.FaceInfo;
import com.aiwiown.face.domain.compare.Thresholds;
import com.aiwiown.face.domain.search.FaceSearchResout;
import com.aiwiown.face.internal.mapping.ApiField;
import com.aiwiown.face.internal.mapping.ApiListField;

import java.util.List;

/**
 * @ClassName : FaceSearchResponse
 * @Description :
 * @Author : dbin0123
 * @Date: 2020-03-14 20:01
 */
public class FaceSearchResponse extends ApiResponse {

    private static final long serialVersionUID = -3938293300997999908L;

    /**
     * 被检测的图片在系统中的标识。
     */
    @ApiListField("results")
    private List<FaceSearchResout> searchResouts;

    /**
     * 一组用于参考的置信度阈值，包含以下三个字段。每个字段的值为一个 [0,100] 的浮点数，小数点后 3 位有效数字。
     * 1e-3：误识率为千分之一的置信度阈值；
     * 1e-4：误识率为万分之一的置信度阈值；
     * 1e-5：误识率为十万分之一的置信度阈值；
     * 如果置信值低于“千分之一”阈值则不建议认为是同一个人；如果置信值超过“十万分之一”阈值，则是同一个人的几率非常高。
     * 请注意：阈值不是静态的，每次返回的阈值不保证相同，所以没有持久化保存阈值的必要，更不要将当前调用返回的 confidence 与之前调用返回的阈值比较。
     * 注：如果传入图片但图片中未检测到人脸，则无法进行人脸搜索，本字段不返回。
     */
    @ApiField("thresholds")
    private Thresholds thresholds;

    /**
     * 传入的图片在系统中的标识。
     * 注：如果未传入图片，本字段不返回。
     */
    @ApiField("image_id")
    private String imageId;

    /**
     * 传入的图片中检测出的人脸数组，采用数组中的第一个人脸进行人脸搜索。
     * 注：如果未传入图片，本字段不返回。如果没有检测出人脸则为空数组
     */
    @ApiListField("faces")
    private List<FaceInfo> faces;

    public List<FaceSearchResout> getSearchResouts() {
        return searchResouts;
    }

    public void setSearchResouts(List<FaceSearchResout> searchResouts) {
        this.searchResouts = searchResouts;
    }

    public Thresholds getThresholds() {
        return thresholds;
    }

    public void setThresholds(Thresholds thresholds) {
        this.thresholds = thresholds;
    }

    public String getImageId() {
        return imageId;
    }

    public void setImageId(String imageId) {
        this.imageId = imageId;
    }

    public List<FaceInfo> getFaces() {
        return faces;
    }

    public void setFaces(List<FaceInfo> faces) {
        this.faces = faces;
    }
}